package analisis.matrizContingencia;

import java.util.List;

/**
 * @file FScore.java
 * @author Juan Humanes Ferrer
 * @date 14-Marzo-2014
 *
 */
public final class FScore implements IMedida {

    private double fScore;

    public FScore() {
        setfScore(0.0);
    }

    /**
     * Método que retorna el fScore
     *
     * @return fScore
     */
    public double getfScore() {
        return fScore;
    }

    /**
     * Métodod que modifica el valor de fScore
     *
     * @param fScore
     */
    public void setfScore(double fScore) {
        this.fScore = fScore;
    }

    /**
     * Método que calcula el fscore
     *
     * @param tp
     * @param tn
     * @param fp
     * @param fn
     * @param valoresMedidas
     */
    @Override
    public void calculaMedida(double tp, double tn, double fp, double fn, List<IMedida> valoresMedidas) {
        double precision = valoresMedidas.get(0).verValor(); //En la posicion 0 esta el valor de Precision
        double recall = valoresMedidas.get(1).verValor(); //En la posicion 1 esta el valor de Recall

        double result = Double.POSITIVE_INFINITY;
        if (precision != Double.POSITIVE_INFINITY && recall != Double.POSITIVE_INFINITY) {
            result = precision * recall;
        }
        setfScore(result);
    }

    @Override
    public Double verValor() {
        return getfScore();
    }

}
